package com.example.knowleage.pairClass;


import org.apache.commons.lang3.tuple.MutablePair;
import org.apache.commons.lang3.tuple.Pair;

/**
 * @ClassName TestPair
 * @Description 这里学习下pair类，注意是commons-lang3中的，不是jdk中的
 * 应用场景简单理解下：
 * 比如你要返回2个数据，当然你可以定义一个类，这样就太麻烦了；
 * 用map的话你还要定义key，value，也不是太好；用数组的话取值也不够优雅，用Pair无论创建还是取值都很方便
 * Pair 主要有2个实现类   ImmutablePair和 MutablePair   主要区别是ImmutablePair给定值后无法改变，也就是说一旦创建就无法改变，而MutablePair可以改变
 *
 * pair 实现了 Comparable 和 Serializable  ，说明可以进行比较和序列号   他还实现了 Map.Entry<L, R>，其中 getKey() ,gatValue() 都是其方法实现
 * 可以看到ImmutablePair 调用setValue方法会报错
 * @Author KunxianLi
 * Date 2021/4/20 17:19
 * Version 1.0
 **/
public class TestPair {

    public static void main(String[] args) {
        //默认创建的是ImmutablePair
        Pair<String, String> pair = Pair.of("key", "value");

        //都是 取key值
        String left = pair.getLeft();
        String key = pair.getKey();

        System.out.println(left.equals(key));
        //都是取value值
        String right = pair.getRight();
        String value = pair.getValue();
//        pair.setValue("value1");
        System.out.println(right.equals(value));

        MutablePair<Object, Object> mutablePair = new MutablePair<>("key","value");
        mutablePair.setLeft("key1");
        mutablePair.setRight("value1");

        System.out.println(mutablePair.getLeft()+"==========="+mutablePair.getRight());
    }
}
